Tư tưởng của thuật toán Cây Steiner

Xét đồ thị G sau:

Đồ thị G

Các bước thực hiện

  • Đầu vào: Trọng đồ thị liên thông G=(V,E,w) gồm n đỉnh và tập W ⊂ V m đỉnh, m < n.
  • Đầu ra: Cây Steiner của W trong G.
  • Các bước:
    • Bước 1: Xây dựng đồ đơn đủ có trọng số G’=(V,F,w’) (bằng thuật toán Floyd-Warshall), trong đó w’(u,v) là khoảng cách ngắn nhất từ u đến v với mọi cặp (u,v).
    • Bước 2: Với mỗi S ⊂ V-W, card(S) ≤ m-2, tìm cây khung nhỏ nhất của đồ thị <W∪S> sinh bởi W∪S trong G’. Trong các cây khung đó tìm cây T’ có trọng số nhỏ nhất (dùng thuật toán Kruskal hoặc Prim).
    • Bước 3: Xây dựng cây Steiner T từ T’ bằng cách thay mỗi cạnh nối hai đỉnh trong G’ bằng đường đi nối chúng với nhau trong G. Các đỉnh thuộc T mà không thuộc W là những đỉnh Steiner.